<?php

class AnagraficaController extends BaseController {

	/*
	|--------------------------------------------------------------------------
	| Anagrafica Controller
	|--------------------------------------------------------------------------
	|
	| You may wish to use controllers instead of, or in addition to, Closure
	| based routes. That's great! Here is an example controller method to
	| get you started. To route to this controller, just add the route:
	|
	|	Route::get('/', 'HomeController@showWelcome');
	|
	*/

	public function getIndex()
	{
		$intestazioni = array(
				'codice'=>'codice',
				'famiglia'=>'famiglia',
				'descrizione'=>'descrizione',
				'data_prossimo_controllo'=>'prossimo controllo',
				'posizione'=>'posizione attuale',
				);
		
		$strumenti_movimentati = array_unique(DB::table('commesse')->lists('id_strumento_misura'));
		
		$strumenti_db = DB::table('strumenti_misura')->get();
		$strumenti = array();
		foreach($strumenti_db as $strumento_db){
			$strumento = array();
			$strumento['codice'] = trim($strumento_db->codice);
			$strumento['famiglia'] = trim($strumento_db->famiglia);
			$strumento['descrizione'] = trim($strumento_db->descrizione);
			
			$time_start = strtotime($strumento_db->data_ultimo_controllo);
			$time_add = ($strumento_db->frequenza_controllo)*60*60*24;
			$strumento['data_prossimo_controllo'] = date('d-m-Y', $time_start+$time_add);
			
			if(in_array($strumento['codice'], $strumenti_movimentati)){
				$macchina_db = DB::table('commesse')->select('macchina')->where('id_strumento_misura', '=', $strumento['codice'])->where('posizione', '=', 0)->get();
				$strumento['posizione'] = $macchina_db[0]->macchina;
			}else{
				$strumento['posizione'] = 'collaudo';
			}
			
			$strumento['dettagli'] =  trim($strumento_db->matricola).";".trim($strumento_db->campo_misura).";".trim($strumento_db->taratura).";".trim($strumento_db->ente_taratura).";".trim($strumento_db->frequenza_controllo).";".trim($strumento_db->data_ultimo_controllo).";".trim($strumento_db->data_fabbricazione).";".trim($strumento_db->data_declassamento).";".trim($strumento_db->data_scadenza).";".trim($strumento_db->produttore).";".trim($strumento_db->errore_strumentale).";".trim($strumento_db->ripetitivita).";".trim($strumento_db->risoluzione).";".trim($strumento_db->created_at).";".trim($strumento_db->updated_at);
			array_push($strumenti, $strumento);
		}		
		return View::make('anagrafica.index',array('strumenti'=>$strumenti, 'intestazioni'=>$intestazioni));
	}
	
	public function getImporta(){
		return View::make('anagrafica.importa');
	}
	
	public function postImporta(){
		
		//cancello la vecchia tabella di anagrafica
		DB::table('strumenti_misura')->delete();
		
		$file_array = Array();
		$linee_escluse = Array();
		
		if(Input::hasFile('file-anagrafica')){
			//trovo il path del file caricato e lo apro
			$path = Input::file('file-anagrafica')->getRealPath();
			$file_src = fopen($path, 'r');
			
			//leggo il file
			while (!feof($file_src)) {
				$line = fgets($file_src);
				
				$line_explode = explode(";",$line);
				//print count($line_explode);
				//print_r($line_explode);
				if(count($line_explode) > 1){
					array_push($file_array, $line_explode);
				}else{
					array_push($linee_escluse, $line_explode);
				}
			}
			fclose($file_src);
			
			//alzo temporaneamente il tempo di esecuzione dello script per permettere il caricamento di tutti i dati
			ini_set('max_execution_time', '90');
			//Inserisco tutti i dati tranne le linee di intestazione
			for($i = 1; $i < count($file_array); $i++){
				//var_dump($file_array[$i]);
				DB::table('strumenti_misura')->insert(array(
						array(
								'codice' =>$file_array[$i][0],
								'categoria' => trim($file_array[$i][1]),
								'famiglia' => trim($file_array[$i][2]),
								'descrizione' => trim($file_array[$i][3]),
								'matricola' => trim($file_array[$i][4]),
								'campo_misura' => trim($file_array[$i][5]),
								'taratura' => trim($file_array[$i][6]),
								'ente_taratura' => trim($file_array[$i][7]),
								'frequenza_controllo' => trim($file_array[$i][8]),
								'data_ultimo_controllo' => AnagraficaController::MyCreateFromFormat('d/m/y', $file_array[$i][9]),
								'data_fabbricazione' => AnagraficaController::MyCreateFromFormat('d/m/y', $file_array[$i][10]),
								'data_declassamento' => AnagraficaController::MyCreateFromFormat('d/m/y', $file_array[$i][11]),
								'data_scadenza' => AnagraficaController::MyCreateFromFormat('d/m/y', $file_array[$i][12]),
								'produttore' => trim($file_array[$i][13]),
								'errore_strumentale' => trim($file_array[$i][14]),
								'ripetitivita' => trim($file_array[$i][15]),
								'risoluzione' => trim($file_array[$i][16]),
								'created_at' => date("Y-m-d H:i:s", time()),
								'updated_at' => date("Y-m-d H:i:s", time()),
						)
				));
			}
				//riporto il tempo di esecuzione dello script al valore originale
				ini_set('max_execution_time', '30');
		}else{
			return View::make('anagrafica.importata');
		}
	}
	
	private static function MyCreateFromFormat($formato, $stringa){
		if(strcmp($stringa, "") == 0){
			return null;
		}else{
			return DateTime::createFromFormat($formato, trim($stringa));
		}
	}
}